
[D]AzmIt v1.16 (C) 1997-1999 Mikael Klasson aka Fluff

A: == AzmIt
D: == DazmIt


*** v1.16 - 09 Aug 1999
*
* 8086-PII Deschutes,MMX,3DNow!

-    By defining "WIN32" at compile time, it's possible to create an
     object file that works well with win32.
- D: I'd overlooked the reg-part of the pop instructions starting with
     08fh. These are two-byte instructions for popping the general
     purpose registers and are quite useless as there are one-byte
     instructions that accomplish the same things.
- A: Fixed a bunch of problems with word sized immediate operands in
     32-bit mode.
- A: Instructions with 32 bits offset only weren't assembled correctly
     in 32-bit mode.
- D: "cmp" is now included in the set of instructions that get
     comments with "Some comments".
-    Distinguishes between "prefetch" and "prefetchw".


*** v1.15 - 10 Mar 1999
*
* 8086-PII Deschutes,MMX,3DNow!

- A: A rep-prefix followed by an instruction on the same line assembles
     correctly.
- A: "rep" is a valid synonym for "repe".
- A: Doh! [cpu] was _not_ set to indicate what cpu the instruction
     required after calling _assembler, but rather to the lower byte of
     the instruction's index into my table of mnemonics. :-D


*** v1.14 - 19 Nov 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- A: *cough* *cough* setting the carry flag, doing a cmp and a
     conditional jump and then checking the carryflag believing it has
     retained the original value really isn't very bright, is it? Behold
     the red dot at the horizon, that's Fluff. Thanks go to Sune Marcher
     for kicking me in the head.


*** v1.13 - 01 Nov 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- A: _assemble sets [cpu] to indicate what cpu the instruction requires.
- A: Instructions with modr/m bytes of 0c0h or higher sometimes caused a
     SIB byte to be output.


*** v1.12 - 16 Oct 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- A: Fixed a tiny bug in the expression parser.
- A: "aam" or "aad" without an immediate value is ok now and
     automagically gets the proper 00ah second byte.
- A: "int 3" uses the shorter CC form instead of CD03.
- A: "imul reg,imm" is a valid substitute for "imul reg1,reg2,imm" when
     reg1 == reg2.
- A: "mov eax,[1234h]" from a 32-bit seg was assembled to 67A13412. I've
     changed this to A134120000 now.
- A: "[-1+bx]" was ok while "[bx-1]" was not.


*** v1.11 - 22 Sep 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- A: 1+(1+1)*2 is _not_ 6. There were quite a few other nasty features
     in AzmIt's expression parser as well. I've rewritten it now.
- A: Added modulus operator.
- D: "t."-prefixes looked rather strange (thanks mrz_ai!).
- A: Only cared about the beginning of operands, i.e "call di+2" and
     it's likes were ok.
- A: Explicitly expressed operandsizes were sometimes ignored, e.g
     "cmp b.[si],0".
- A: "[eax*4+eax]" didn't work. You can even write "[eax*5]" now if you
     so prefer, although I can't for the life of me imagine what sort of
     twisted person would write that... ;)
- D: E6 42 is no longer disassembled to "out   042  ; 'B',al" when full
     comments are enabled.


*** v1.10 - 27 Aug 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- AzmIt is born. Use it if you feel like assembling instructions.
- a SIB-byte could be disassembled with esp as index-reg.


*** v1.06 - 12 Jul 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- "push imm8" wasn't sign-extended properly
- seg16:offs16 now gets a "f." prefix instead of "d."
- sel16:offs32 now gets a "p." prefix instead of "d." ;)
- as usual, thanks go to wbinvd


*** v1.05 - 04 Jul 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- sysenter, sysexit
- umov
- feni, fneni, ffree
- movsx/movzx didn't display the size of a memory operand
- I didn't report an invalid opcode for prefetch instructions with
  register direct addressing
- always used jcxz instead of jecxz (doh!)
- I no longer force the bswap operand to be displayed like a 32 bit reg
- the operand to smsw was always 16 bits
- I've skipped the short forms of fpu insts with implicit meanings (such
  as just "fcomp") and decided to display the reg at all times. Besides,
  quite a few of those short forms lacked a trailing 'p'
- I now sign-extend the 3rd operand of "imul dst,src,imm8" to the
  datasize
- the 3rd operand of "imul dst,src,imm" was always believed to be 16
  bits
- invalid instructions like "lea ax,ax" are...well...invalid now
- _major_ thanks to wbinvd (a handle, damnit ;) ) for bugreports
- added the remaining 7 foofing opcodes
- added "weird opcodes" (tm) Peter Quiring ;)


*** v1.04 - 29 Jun 1998
*
* 8086-PII Deschutes,MMX,3DNow!

- 3DNow!
- disassembling an instruction using the direct address feature of a SIB
  byte fucked up one of my tables. This in turn caused all following
  instructions w/ no offset at all to disassemble as if they had a dword
  sized direct address portion. Err... Aaah, well
- changed st(#) to st#


*** v1.03 - 22 Mar 1998
*
* 8086-PII Deschutes,MMX

- mmx
- fixed "mov mem,segreg"


*** v1.02 - 19 Mar 1998
*
* 8086-PII Deschutes inst. (excl. MMX)

- each 66h (and 67h) prefix toggled the size instead of just setting it
  to the opposite of the segmentsize. No, you're right, a sane person
  would normally never have been bothered by this. ;)


*** v1.01 - 01 Mar 1998
*
* 8086-PII Deschutes inst. (excl. MMX)

- fxsave, fxrstor


*** v1.00 - 15 Feb 1998
*
* 8086-PPro inst. (excl. MMX)

- 83f5ff is displayed like "xor ebp,0ffffffffh" instead of "xor ebp,0ffh"
- "b." etc wasn't displayed if the addressing mode involved a SIB
- same goes for "push imm" instructions


*** v0.99 - 04 Jan 1998
*
* 8086-PPro inst. (excl. MMX)

- lgdt, lidt
- a SIB with no index-reg looks right now
- relative offsets were calculated from the start of the instruction
- displays preceding zeroes in addresses


*** v0.98 - 30 dec 1997
*
* 8086-PPro inst. (excl. MMX)

- added comments to some instructions involving immediate data


*** v0.97 - 22 dec 1997
*
* 8086-PPro inst. (excl. MMX)

- removed support for "call d.dx", "jmp d.dx" and similar instructions
  They really don't exist! =)
- instructions that run out of bytes during decoding are displayed a bit
  neater now


*** v0.96 - 01 dec 1997
*
* 8086-PPro inst. (excl. MMX)

- foof
- _really_ fixed a slight bug with one-byte opcodes at eof


*** v0.95 - 15 nov 1997
*
* 8086-PPro inst. (excl. MMX)

- fixed a slight bug with one-byte opcodes at the end of a file


*** v0.93 - 25 sep 1997
*
* 8086-PPro inst. (excl. MMX)

- shld, shrd (80386... oops!)
- cmov, fcmov, fcomi, fcomip, fucomi, fucomip (PPro)


*** v0.92 - 25 sep 1997
*
* 8086-Pentium inst.

- FPU
- icebp (undoc.)
- ud2 (PPro)


*** v0.21 - 24 sep 1997
*
* 8086-Pentium inst.

- pmode
- 32-bit
- salc, loadall286, loadall386 (undoc.)
- rdpmc (PPro)


*** v0.20 - 23 sep 1997
*
* 8086-80486 inst.

- crx, drx, trx
- prefixes


*** v0.10 - 21 sep 1997
*
* 8086-80486 inst.

- realmode
- 16-bit
- aad imm8, aam imm8 (undoc.)


*** v0.01 - 20 sep 1997
*
* started working on it

- no inst... ;)

